極限梯度提升 eXtreme Gradient Boosting(XGBoost) ,被稱為 Kaggle 競賽神器,常常第一名都是使用這個演算法。先來前情提要一下樹的發展(開始上生物課XD?)
從下圖可以發現,XGBoost 相比其他演算法的優點是訓練速度快、準確率也高 -> 總而言之 快、狠、準
pip install xgboost
from xgboost import XGBClassifier
classifier = XGBClassifier(n_estimators=1000, learning_rate= 0.01)
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
print(cm)
>>> [[59 8]
[ 5 28]]
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))
# 我們可以畫特徵的重要程度
from xgboost import plot_importance
plot_importance(classifier)
print('每個特徵重要程度: ', classifier.feature_importances_)
>>> 每個特徵重要程度: [0.49414912 0.50585085]
請先安裝 graphviz
mac 安裝
brew install graphviz
或是安裝
pip install graphviz
from xgboost import plot_tree
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(30, 30))
plot_tree(classifier, ax=ax)
plt.savefig('xgboost_tree.png')
plt.show()
更詳細可以請參考連結